package com.dc.commons.jpa.repository;

import java.io.Serializable;

import com.dc.commons.enumer.MoveType;
import com.dc.commons.persistence.able.TreeAble;

/*******************************************************************************<P>
 * 文件名: TreeAbleRepository.java <br>
 * 版本: 1.0<br>
 * 描述:<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2016年3月24日 下午2:59:40<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 ******************************************************************************/
public interface TreeAbleRepository<T extends TreeAble,ID extends Serializable> {

	
	/**
	 * 保存 tree对象
	 * @param entity
	 * @return S
	 */
	public <S extends T> S saveTree(S entity); 
	
	/**
	 * 保存 tree对象
	 * @param entity
	 * @return S
	 */
	public <S extends T> S updateTree(S entity);
	
	/**
	 *  删除树
	 * @param entity
	 * @return
	 */
	public <S extends T> S deleteTree(S entity);
	

	/**
	 * 减少大于该节点的排序
	 * @param parentKey
	 * @param displayNo
	 */

	public void reduceSibling (String parentKey,Integer displayNo);
	
	/**
	 * 增大大于该节点的排序 
	 * @param parentKey
	 * @param displayNo
	 */
	public void affixationSibling (String parentKey,Integer displayNo);
	
	/**
	 * 拖拽 树
	 * @param from
	 * @param to
	 * @param moveType
	 */
	public void drag(ID from,ID to,MoveType moveType);
	
}
